package com.ztorn.fiscale.service;

import java.util.List;
import com.ztorn.fiscale.domain.FiscaleRefundBatch;

/**
 * 退税申报批次Service接口
 * 
 * @author ztorn
 * @date 2025-09-20
 */
public interface IFiscaleRefundBatchService 
{
    /**
     * 查询退税申报批次
     * 
     * @param batchId 退税申报批次ID
     * @return 退税申报批次
     */
    public FiscaleRefundBatch selectFiscaleRefundBatchById(Long batchId);

    /**
     * 查询退税申报批次列表
     * 
     * @param fiscaleRefundBatch 退税申报批次
     * @return 退税申报批次集合
     */
    public List<FiscaleRefundBatch> selectFiscaleRefundBatchList(FiscaleRefundBatch fiscaleRefundBatch);

    /**
     * 新增退税申报批次
     * 
     * @param fiscaleRefundBatch 退税申报批次
     * @return 结果
     */
    public int insertFiscaleRefundBatch(FiscaleRefundBatch fiscaleRefundBatch);

    /**
     * 修改退税申报批次
     * 
     * @param fiscaleRefundBatch 退税申报批次
     * @return 结果
     */
    public int updateFiscaleRefundBatch(FiscaleRefundBatch fiscaleRefundBatch);

    /**
     * 批量删除退税申报批次
     * 
     * @param batchIds 需要删除的退税申报批次ID
     * @return 结果
     */
    public int deleteFiscaleRefundBatchByIds(Long[] batchIds);

    /**
     * 删除退税申报批次信息
     * 
     * @param batchId 退税申报批次ID
     * @return 结果
     */
    public int deleteFiscaleRefundBatchById(Long batchId);
    
    /**
     * 生成退税数据
     * 
     * @param matchingIds 配单ID数组
     * @return 结果
     */
    public FiscaleRefundBatch generateRefundData(Long[] matchingIds);
    
    /**
     * 正式申报
     * 
     * @param batchId 批次ID
     * @return 结果
     */
    public int submitRefundDeclaration(Long batchId);
    
    /**
     * 刷新申报状态
     * 
     * @param batchId 批次ID
     * @return 结果
     */
    public int refreshRefundStatus(Long batchId);
}